"""
Python 在3.5版本的时候引入了类型注解
以方便静态类型检查工具，IDE等第三方工具
在代码中涉及数据交互的地方，提供数据类型的注解（显式的说明）

帮助IDE工具对代码进行类型推断，协助做代码提示
帮助开发者自身对变量进行类型注释

支持：
变量的类型注解： 变量: 类型=xx
i: int = 1


函数（方法）形参列表和返回值的类型注解
类：类型 = 类（）
s: Student = Student()
"""
import random
from typing import Union, Tuple

# 更严格的类型注解
my_list: list[int] = [1, 2, 3]
my_tuple: tuple[int, str, float] = (1, "111", 1.1)
my_set: set[str] = {"a", "b", "c"}
my_dict: dict[str, str] = {"a": "A", "b": "B"}
my_str: str = "11122233"

l: list[str] = list(('a', 'b'))
l.append("1")
l.append("2")
print(l)

# 还可以通过注释的方式进行类型注解
var_1 = random.randint(0, 10)  # type:int


# 函数类型注解

def test(a: int, b: list[str]) -> str:
    print(a)
    print(b)
    return "ok"


result: str = test(10, ["nihao", "ma"])
print(result)

# 联合类型注解 Union

my_list1: list[Union[int, str]] = [1, "a", "b"]


def func(data: Union[int, str]) -> tuple[str, int]:
    print(data)
    return "aaaa", 1
